# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
from scrapy.exporters import JsonLinesItemExporter
from boss_job.spiders.boss import BossSpider

import pymysql

class BossJobPipeline(object):
    def __init__(self):
        # 连接数据库

        dbparams = {

            'host': '127.0.0.1',
            'port': 3306,
            'user': 'root',
            'password': 'Jt17602180143!',
            'database': 'boss直聘',
            'charset': 'utf8',
        }

        self.conn = pymysql.connect(**dbparams)

        self.cursor = self.conn.cursor()  # 获取游标

        self.sql = None

        self.fjson = open('boss.json', "wb")  # 保存json格式

        self.exporter = JsonLinesItemExporter(self.fjson, ensure_ascii=False)

        # # 创建表之前看是否存在当前要创建的表，有就删除

        self.cursor.execute("drop table if exists %s" % BossSpider.key_word)

        # 创建搜索关键字表sql语句

        sql = """create table %s(

                  id  int primary key auto_increment,

                  公司名字 varchar (255),

                  所在城市 varchar (255),

                  工作名称 varchar (255),

                  薪水 varchar (255),

                  工作经验 varchar (255),

                  学历 varchar (255),

                  公司种类 varchar (255),

                  融资 varchar (255),

                  公司人数 varchar (255),

                  爬取时间 datetime)"""

        # 执行创建表的语句

        self.cursor.execute(sql % BossSpider.key_word)

    def process_item(self, item, spider):
        # 插入数据的sql语句

        self.sql = "insert into %s" % BossSpider.key_word + "(公司名字,所在城市,工作名称,薪水,工作经验,学历,公司种类,融资,公司人数,爬取时间) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"

        self.cursor.execute(self.sql, (item['company_name'], item['company_locale'], item['job_name'],

                                       item['job_salary'], item['experience_demand'], item['educational_demand'],

                                       item['company_work'], item['finance'], item['persons_in_company'],
                                       item['crawl_time']))

        self.conn.commit()  # 保存数据

        self.exporter.export_item(item)  # 传入item保存json数据

        return item

    def close_spider(self, spider):
        self.fjson.close()  # 关闭json文件

        self.conn.close()  # 关闭数据库连接
